/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"3FE4DB1B-157E-4E3D-B401-810AB29B9CCC"}
 */
var fconv = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"AC5C2CFF-5BC6-48EF-A9E9-69ABB9B93B45"}
 */
var fmon = null;

/**
 * Callback method for when form is shown.
 *
 * @param {Boolean} firstShow form is shown first time after load
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"F92910E0-7FB4-4267-A2B8-B3BAAB6B38DD"}
 */
function onShow(firstShow, event) {
	databaseManager.setAutoSave(false)
	if (moneda_carga == 1)
		fmon = "$"
	else
		fmon = "u$s"
	
	dolar = globals.gBuscarCotizacion(fecha)
	
	if (globals.gboton == "M")
	{
		elements.bot_elim.visible  = 0
		elements.bot_conf.visible  = 1
		elements.bot_nuevo.visible = 1
		elements.tabs_190.enabled  = 1
		asiento_cab_to_asiento_aux.deleteAllRecords()
	}
	else 
	{
		elements.bot_elim.visible  = 1
		elements.bot_conf.visible  = 0
		elements.bot_nuevo.visible = 0
		elements.tabs_190.enabled  = 0
	}
	globals.gtotal_debe  = total
	globals.gtotal_haber = total
	var $cant = databaseManager.getFoundSetCount(asiento_cab_to_asiento) 
	for (var i = 1 ; i <= $cant ; i++)
	{
		asiento_cab_to_asiento.setSelectedIndex(i)		
		asiento_cab_to_asiento.importe_carga_debe  = asiento_cab_to_asiento.importe_debe
		asiento_cab_to_asiento.importe_carga_haber = asiento_cab_to_asiento.importe_haber
		if (globals.gboton == "M") 
		{
			asiento_cab_to_asiento_aux.newRecord()
			asiento_cab_to_asiento_aux.anio       = asiento_cab_to_asiento.anio
			asiento_cab_to_asiento_aux.mes        = asiento_cab_to_asiento.mes
			asiento_cab_to_asiento_aux.empresa    = asiento_cab_to_asiento.empresa			
			asiento_cab_to_asiento_aux.centro     = asiento_cab_to_asiento.centro
			asiento_cab_to_asiento_aux.division   = asiento_cab_to_asiento.division
			asiento_cab_to_asiento_aux.cuentas_id = asiento_cab_to_asiento.cuentas_id
			asiento_cab_to_asiento_aux.columna    = asiento_cab_to_asiento.columna
			asiento_cab_to_asiento_aux.importe    = asiento_cab_to_asiento.importe
			asiento_cab_to_asiento_aux.impodol    = asiento_cab_to_asiento.impodol
		}
	}
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"DCB65E86-969B-4B37-828E-CAE55D773BE3"}
 */
function onAction_alta_item(event) {
	asiento_cab_to_asiento.newRecord()
	forms.asiento_modif.elements.cuentas_id.requestFocus()
	forms.asiento_modif.anio 		= fecha.getFullYear()
	forms.asiento_modif.mes			= fecha.getMonth() +1
	forms.asiento_modif.numero		= numero
	forms.asiento_modif.division	= 1
	forms.asiento_modif.centro		= 1
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"1386B462-A0B0-4381-818D-67D372215FCF"}
 */
function onAction_cancelar(event) {
	databaseManager.revertEditedRecords()
	databaseManager.setAutoSave(true)
	var $win = application.getWindow('ASIENTO')
	$win.hide()
	$win.destroy()
}

/**
 * Handle hide window.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"A7144364-B0D6-4715-82DC-A992E90C4287"}
 */
function onHide(event) {
	var res = globals.DIALOGS.showQuestionDialog('','Esta seguro que desea Salir?','SI','NO')    	
	if (res == 'NO')
	{
		return false
	}
	else
	{
		databaseManager.revertEditedRecords()
		databaseManager.setAutoSave(true)
		var $win = application.getWindow('ASIENTO')
		$win.hide()
		$win.destroy()
	}
	return true
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"502860F4-3192-4280-846F-493859CAF854"}
 */
function onAction_eliminar(event) {
	var res = globals.DIALOGS.showQuestionDialog('','Elimina el Asiento Completo?','SI','NO')    	
	if (res == 'NO')
	{
		return
	}
	databaseManager.startTransaction()
		
	for (var i = 1 ; i <= asiento_cab_to_asiento.getSize() ; i++)
	{
		asiento_cab_to_asiento.setSelectedIndex(i) 
   	    globals.gresta_saldos(asiento_cab_to_asiento)  
	} 
	
	forms.asiento_modif.asiento_to_asiento_cab.deleteAllRecords() 
	controller.deleteRecord()
	if (!databaseManager.commitTransaction())
    {
     	databaseManager.rollbackTransaction()
    } 
	databaseManager.setAutoSave(true)
	var $win = application.getWindow('ASIENTO')
	$win.hide()
	$win.destroy()
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"A9A07215-655D-4809-A8EE-C52DD7889F37"}
 */
function onAction_confirmar(event) {
	var res = globals.DIALOGS.showQuestionDialog('','Confirma el Asiento?','SI','NO')    	
	if (res == 'NO')
	{
		return
	}
	var error = 0
	var $cant = databaseManager.getFoundSetCount(forms.asiento_modif.foundset)
	for (var i = 1 ; i <= $cant ; i++)
	{
		var $rcd = forms.asiento_modif.foundset.getRecord(i)
		
		if ($rcd.cuentas_id == null)
		{
			error = 1
			globals.DIALOGS.showWarningDialog("Aviso","Existen campos sin completar","Ok")					
			break
		}
			
		if ($rcd.importe_carga_debe != null && $rcd.importe_carga_haber != null)
		{
			error = 1
			globals.DIALOGS.showWarningDialog("Aviso","Debe y Haber con importes","Ok")
			break
		}
		
		if (!$rcd.division)
		{
			$rcd.division = 1
		}
		if (!$rcd.centro)
		{
			$rcd.centro = 1
		}
		if ($rcd.importe_carga_debe == null || $rcd.importe_carga_debe == 0)
		{
			var imp = $rcd.importe_carga_haber.toFixed(2)*1
			$rcd.columna = 'H'
		}	
		else
		{
			var imp = $rcd.importe_carga_debe.toFixed(2)*1
			$rcd.columna = 'D'
		}
		if (moneda_carga == 1)
			$rcd.importe = imp
		else
			$rcd.impodol = imp
	}
		
	if (globals.gtotal_debe != globals.gtotal_haber)
	{
		error = 1
		globals.DIALOGS.showWarningDialog("Aviso","El Total del Debe no coincide con el Total del Haber","Ok")
	}
	
	if (error == 1)			
		globals.DIALOGS.showWarningDialog("Aviso","Asiento sin actualizar","Ok")			
	else
	{
		if (globals.gtotal_debe != total)
		{
			var res = globals.DIALOGS.showQuestionDialog('','Total diferente, continua?','SI','NO')			    
			if (res == 'NO')
			{
				return
			}
		}
		fConversionDolares()
		moneda = "A"
		if (moneda_carga == 1)
		{
			moneda = "P"
		}
		else
		{
			moneda = "D"
		}
		total = globals.gtotal_debe
		// Resta de los saldos el asiento como estaba antes de modificarlo - eso se guardó en asiento_aux	
		for (var i = 1 ; i <= asiento_cab_to_asiento_aux.getSize() ; i++)
		{
			asiento_cab_to_asiento_aux.setSelectedIndex(i)	
	   	    globals.gresta_aux_saldos(asiento_cab_to_asiento_aux, tipo_actualizacion)
		}
		
			// suma a los saldos el asiento después de modificado
		for (var i = 1 ; i <= asiento_cab_to_asiento.getSize() ; i++)
		{
			asiento_cab_to_asiento.setSelectedIndex(i)	
			
			var wimpopes = asiento_cab_to_asiento.importe 
			var wimpodol = asiento_cab_to_asiento.impodol 
			// que haga baja si importe = 0
			if (wimpopes > 0 || wimpodol > 0)
			{
		   	   	globals.gactualiza_saldos(asiento_cab_to_asiento)
	   	    }
	   	    else
			{
		   	    asiento_cab_to_asiento.deleteRecord() 		
			}
		}
		databaseManager.startTransaction()
		var estado = databaseManager.saveData()
		if (estado == false)
		{
			databaseManager.rollbackTransaction()
			databaseManager.revertEditedRecords()
			globals.DIALOGS.showWarningDialog("Aviso","No se actualizaron los datos","Ok")
			return
		}
		else
		{
			databaseManager.commitTransaction()
			databaseManager.setAutoSave(true)
			globals.DIALOGS.showWarningDialog("Aviso","Los datos se actualizaron correctamente","Ok")
	        var $win = application.getWindow('ASIENTO')
			$win.hide()
			$win.destroy()
	    }
	}
}

/**
 * @properties={typeid:24,uuid:"70492B44-E33A-453F-A415-E860CCF2407B"}
 */
function fConversionDolares() {
	var vTotalD = 0
	var vTotalH = 0
	
	var $cant = databaseManager.getFoundSetCount(forms.asiento_modif.foundset)
	for (var i = 1 ; i <= $cant ; i++)
	{
		var $rcd = forms.asiento_modif.foundset.getRecord(i)
		
		if (moneda_carga == 1)//Pesos
		{
			var impdol = $rcd.importe / dolar			
			$rcd.impodol = impdol.toFixed(2)*1
			
			if ($rcd.columna == 'D')
				vTotalD += $rcd.impodol
			else
				vTotalH += $rcd.impodol 
		}
		else
		{
			var importe = $rcd.impodol * dolar			
			$rcd.importe = importe.toFixed(2)*1

			if ($rcd.columna == 'D')
				vTotalD += $rcd.importe
			else
				vTotalH += $rcd.importe
		} 	
	}
	
	if (vTotalD != vTotalH)
	{
		var dif = vTotalD - vTotalH
		if ($rcd.columna == 'H')
		{	
			if (moneda_carga == 1)//Pesos
				$rcd.impodol += dif
			else
				$rcd.importe += dif
		}
		else
		{
			if (moneda_carga == 1)//Pesos
				$rcd.impodol -= dif
			else
				$rcd.importe -= dif
		}
	} 
}
